package com.joysuch.wwyt.openapi.services.serviceV1.impl;

import com.joysuch.wwyt.core.enums.Status;
import com.joysuch.wwyt.core.support.Context;
import com.joysuch.wwyt.openapi.constants.ApiCode;
import com.joysuch.wwyt.openapi.constants.ApiStatus;
import com.joysuch.wwyt.openapi.enums.ApiStaticParameter;
import com.joysuch.wwyt.openapi.exception.ApiV1ExceptionCodeMsg;
import com.joysuch.wwyt.openapi.services.serviceV1.ApiV1TokenVerifyService;
import com.joysuch.wwyt.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.repository.query.ReactiveQueryByExampleExecutor;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;

/**
 * @author: JamesZY
 * @date: 2021/9/7
 * @description:
 */
@Slf4j
@Service
public class ApiV1TokenVerifyServiceImpl implements ApiV1TokenVerifyService {
//    @Autowired
//    private RedissonClient redissonClient;
//
//    @Override
//    public void verifyToken(HttpServletRequest request) throws ApiV1ExceptionCodeMsg {
//        this.getToken(request);
//    }
//
//    private void getToken(HttpServletRequest request) throws ApiV1ExceptionCodeMsg {
//        String token = this.getHeaderToken(request);
//        if (Strings.isBlank(token)) {
//            log.error("令牌为空");
//            throw new ApiV1ExceptionCodeMsg(Status.API_V1_TOKEN_IS_NULL_ERROR);
//        }
//        String tokenStr = (String) redissonClient.getBucket(ApiStaticParameter.API_V1_TOKEN + ":" + token).get();
//        if(StringUtil.isEmpty(tokenStr)){
//            throw new ApiV1ExceptionCodeMsg(Status.API_V1_TOKEN_ERROR);
//        }
//        String[] split = tokenStr.split("@");
//        if (!split[2].equals(token)) {
//            log.error("令牌失效");
//            throw new ApiV1ExceptionCodeMsg(Status.API_V1_TOKEN_ERROR);
//        }
//        this.carryBuildData(split);
//    }
//
//    private void carryBuildData(String[] str) {
//        if (str.length > 1) {
//            Context.setTenentId(Long.valueOf(str[0]));
//            Context.setOrgCode(str[1]);
//        }
//    }
//
//    private String getHeaderToken(HttpServletRequest request) {
//        String token = null;
//        try {
//            token = request.getHeader("token");
//        } catch (Exception e) {
//            log.error("Header鉴权不是token");
//        }
//        return token;
//    }
}

